#include "ModRunState.h"
#include <QDebug>

#include "../Output/FactoryOutput.h"

#include "Gof23/Gof_Adapter/MoveOld.h"
#include "Gof23/Gof_Adapter/MoveAdapter.h"

//状态模式的ModRun（State）;
ModRunState::ModRunState()
{
    //模式名称;
    m_strModelName = "状态模式（State）;";
    //模式描述;
    m_strModelDesc = "状态模式：当一个对象的内在状态改变时允许改变其行为，这个对象看起来像是改变了其类。\n"
                     "状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。\n"
                     "把状态的判断逻辑转移到表示不同状态的一系列类中，可以把复杂的判断逻辑简化。\n"
                     "\n"
                     ;
}

//初始化显示模式;
void ModRunState::InitDisplay()
{
    qDebug() << m_strModelName;
    std::shared_ptr<IOutput> pOutPut = FactoryOutput::GetInstance()->CreateDescOutput();
    if (pOutPut)
    {
        std::initializer_list<QString> outList{ m_strModelName,m_strModelDesc};
        pOutPut->OutPut(outList);
    }
}

//返回模式类型;
EnumModRun ModRunState::GetEnum()
{
    return emModRunState;
}

//运行模式;
void ModRunState::ModRun()
{
    std::shared_ptr<IOutput> pOutPut = FactoryOutput::GetInstance()->CreateRunOutput();
    if (pOutPut)
    {
        std::initializer_list<QString> outListStart{ "========状态模式（State） start:=======" };
        std::initializer_list<QString> outListEnd{ "========状态模式（State） end:=======" };
        pOutPut->OutPut(outListStart);

        //责任链模式（Chain）;
        
        
        pOutPut->OutPut(outListEnd);
    }

}

InterFaceModRun* ModRunState::CreateMe()
{
    return new ModRunState();
}
